package com.ruoyi.business.service.impl;

import com.ruoyi.business.domain.TenantFunctionParametersVersion;
import com.ruoyi.business.mapper.TenantFunctionParametersVersionMapper;
import com.ruoyi.business.service.ITenantFunctionParametersVersionService;
import com.ruoyi.common.core.utils.DateUtils;
import com.ruoyi.common.core.utils.UniqueIdGenerator;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * 租户功能点参数版本表Service业务层处理
 *
 * @author ruoyi
 * @date 2025-04-18
 */
@Service
public class TenantFunctionParametersVersionServiceImpl implements ITenantFunctionParametersVersionService
{
    @Autowired
    private TenantFunctionParametersVersionMapper tenantFunctionParametersVersionMapper;

    /**
     * 查询租户功能点参数版本表
     *
     * @param id 租户功能点参数版本表主键
     * @return 租户功能点参数版本表
     */
    @Override
    public TenantFunctionParametersVersion selectTenantFunctionParametersVersionById(Long id)
    {
        return tenantFunctionParametersVersionMapper.selectTenantFunctionParametersVersionById(id);
    }

    /**
     * 查询租户功能点参数版本表列表
     *
     * @param tenantFunctionParametersVersion 租户功能点参数版本表
     * @return 租户功能点参数版本表
     */
    @Override
    public List<TenantFunctionParametersVersion> selectTenantFunctionParametersVersionList(TenantFunctionParametersVersion tenantFunctionParametersVersion)
    {
        return tenantFunctionParametersVersionMapper.selectTenantFunctionParametersVersionList(tenantFunctionParametersVersion);
    }

    /**
     * 新增租户功能点参数版本表
     *
     * @param tenantFunctionParametersVersion 租户功能点参数版本表
     * @return 结果
     */
    @Override
    public int insertTenantFunctionParametersVersion(TenantFunctionParametersVersion tenantFunctionParametersVersion)
    {
        tenantFunctionParametersVersion.setCreateTime(DateUtils.getNowDate());
        //自动产生功能参数编码，并保证唯一
        String parameterCode;
        TenantFunctionParametersVersion searchTenantFunctionParameter = new TenantFunctionParametersVersion();
        while (true) {
            parameterCode = UniqueIdGenerator.getUniqueClassName(10);
            searchTenantFunctionParameter.setParameterCode(parameterCode);
            List<TenantFunctionParametersVersion> list =         tenantFunctionParametersVersionMapper.selectTenantFunctionParametersVersionList(searchTenantFunctionParameter);
            if (list.size() == 0) {
                tenantFunctionParametersVersion.setParameterCode(parameterCode);
                break;
            }
        }
        return tenantFunctionParametersVersionMapper.insertTenantFunctionParametersVersion(tenantFunctionParametersVersion);
    }

    /**
     * 修改租户功能点参数版本表
     *
     * @param tenantFunctionParametersVersion 租户功能点参数版本表
     * @return 结果
     */
    @Override
    public int updateTenantFunctionParametersVersion(TenantFunctionParametersVersion tenantFunctionParametersVersion)
    {
        tenantFunctionParametersVersion.setUpdateTime(DateUtils.getNowDate());
        return tenantFunctionParametersVersionMapper.updateTenantFunctionParametersVersion(tenantFunctionParametersVersion);
    }

    /**
     * 批量删除租户功能点参数版本表
     *
     * @param ids 需要删除的租户功能点参数版本表主键
     * @return 结果
     */
    @Override
    public int deleteTenantFunctionParametersVersionByIds(Long[] ids)
    {
        return tenantFunctionParametersVersionMapper.deleteTenantFunctionParametersVersionByIds(ids);
    }

    /**
     * 删除租户功能点参数版本表信息
     *
     * @param id 租户功能点参数版本表主键
     * @return 结果
     */
    @Override
    public int deleteTenantFunctionParametersVersionById(Long id)
    {
        return tenantFunctionParametersVersionMapper.deleteTenantFunctionParametersVersionById(id);
    }

    @Override
    public int updateCurrentVersionToIsNot(String functionCode,String enterpriseCode) {
        return tenantFunctionParametersVersionMapper.updateCurrentVersionToIsNot(functionCode,enterpriseCode);
    }

    /**
     * 根据函数编码，租户编码删除函数参数列表
     *
     * @param functionCode
     * @param enterpriseCode
     * @param version
     * @return
     */
    @Override
    public int deleteTenantFunctionParametersVersionByFunctionCode(String functionCode, String enterpriseCode,int version) {
        return tenantFunctionParametersVersionMapper.deleteTenantFunctionParametersVersionByFunctionCode(functionCode,enterpriseCode,version);
    }
}
